package entry;

import domain.Manager;
import domain.Subway;

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Entry {
    public static void main(String[] args) throws Exception{

        // 创建集合对象
        ArrayList<String> list = new ArrayList<>();
        ArrayList<Manager> managerList = new ArrayList<>();
        ArrayList<Subway> subwaysList = new ArrayList<>();

        // 创建缓冲流输入对象
        BufferedReader br = new BufferedReader(new FileReader("exam\\managers.txt"));
        String line;
        // 读取managers.txt
        while ((line = br.readLine()) != null){
            // 将文件中的数据添加到List集合中
            list.add(line);
        }
        br.close();
        // 循环遍历list集合
        for (int i = 0; i < list.size(); i++) {
            // 切割字符串
            String[] split = list.get(i).split(",");
            // 利用有参构造方法创建Manager对象
            Manager manager = new Manager(split[0], split[1], split[2], split[3]);
            // 将封装好的Manager对象添加到集合中
            managerList.add(manager);
        }
        // 创建字符缓冲流对象
        BufferedReader br2 = new BufferedReader(new FileReader("exam\\subways.txt"));
        String line2;
        // 读取subways.txt
        while ((line2 = br2.readLine()) != null){
            // 切割字符串
            String[] split2 = line2.split(",");
            // 利用set方法封装对象
            Subway subway = new Subway();
            subway.setNumber(split2[0]);
            subway.setName(split2[1]);
            subway.setSubLine(split2[2]);
            // 将封装好的对象添加到集合中
            subwaysList.add(subway);
        }
        br2.close();

        /*char[] chars = managerList.get(0).getId().toCharArray();
        System.out.println(chars[0]);
        System.out.println(chars[1]);
        System.out.println(chars[2]);
        System.out.println(chars[3]);
        System.out.println("======================");
        String m = "10001";
        char[] chars1 = m.toCharArray();
        System.out.println(chars1[0]);
        System.out.println(chars1[1]);
        System.out.println(chars1[2]);*/

        // 创建Scanner对象
        Scanner sc = new Scanner(System.in);
        // 接收用户输入的工号，姓名等信息
        System.out.println("请管理员进行登陆");
        System.out.println("请输入工号");
        String id = sc.next();
        System.out.println("请输入姓名");
        String name = sc.next();
        // 定义一个flag变量 用来判断用户输入的值是否存在
        boolean flag = false;
        // 遍历 managerList集合
        for (int i = 0; i < managerList.size(); i++) {
            // 如果ID和NAME都相同 则登陆成功
            if (managerList.get(i).getId().equals(id) && managerList.get(i).getName().equals(name)){
                System.out.println("登陆成功");
                flag = true;
                break;
            }
        }

        if(!flag){
            System.out.println("登陆失败");
        }


        // 如果登陆成功
        if (flag){
            lo:while (true) {
                // 给出提示: 1.查看地铁站 2.添加地铁站
                System.out.println("1.查看地铁站 2.添加地铁站 0.退出程序");
                String choice = sc.next();
                // 根据管理人员的选择,执行对应的操作
                switch (choice){
                    case "1":{
                        if (subwaysList == null){
                            System.out.println("没有地铁信息");
                            break;
                        }else {
                            subwaysList.forEach((s) -> {
                                System.out.println(s);
                            });
                            break;
                        }
                    }
                   /* 5.3. 将集合中的地铁站信息更新到文件中,再次打开文件时,
                            应该包含管理人员刚才录入进去的地铁站信息,程序结束*/
                    case "2":{
                        System.out.println("请输入地铁站编号");
                        String number = sc.next();
                        System.out.println("请输入地铁站名称");
                        String name2 = sc.next();
                        System.out.println("请输入地铁站所属路线");
                        String subLine = sc.next();
                        Subway subway = new Subway();
                        subway.setNumber(number);
                        subway.setName(name2);
                        subway.setSubLine(subLine);
                        subwaysList.add(subway);
                        // 重新写入subways.txt文件
                        addSubway(subwaysList);
                        break;
                    }
                    case "0":{
                        System.exit(0);
                    }
                    default:{
                        System.out.println("输入有误");
                        break;
                    }
                }
            }
        }

    }

    private static void addSubway(ArrayList<Subway> subwaysList) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter("exam\\subways.txt",true));
        bw.write(subwaysList.get(subwaysList.size()-1).getNumber()+","
                +subwaysList.get(subwaysList.size()-1).getName()+","
                +subwaysList.get(subwaysList.size()-1).getSubLine());
        bw.newLine();
        bw.close();
    }


}
